home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esdDML.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2000-07-03  |  26.9 KB  |  762 lines  |  [TEXT/ttxt]

  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" version="1.0" 
  3.     xmlns="http://www.w3.org/TR/REC-html40" 
  4.     xmlns:dml = "http://www.purl.org/NET/ddml/v1" 
  5.     xmlns:DDML = "http://www.purl.org/NET/ddml/v1" 
  6.     xmlns:local="#local-functions">
  7.  
  8.   <xsl:param name="imageDir" select="'sdimages'"/>
  9.   <xsl:param name="schemaName" select="' '"/>
  10.     <xsl:output method="html" indent="yes"/>
  11.     <xsl:strip-space elements="*"/>
  12.     <xsl:template match="/">
  13.         <html>
  14.             <head>
  15.                 <title>SchemaDOC - <xsl:value-of select="$schemaName"/> </title>
  16.                 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  17.  
  18.                 <style type="text/css">
  19.                     <!-- container for expanding/collapsing content -->
  20.                     .c  {cursor:hand}
  21.  
  22.                     <!-- button - contains +/-/nbsp -->
  23.                     .b  {color:red; font-family:'Courier New'; font-weight:bold; text-decoration:none}
  24.                     
  25.                     <!-- element container -->
  26.                     .e  {margin-left:1em; text-indent:-1em; margin-right:1em}
  27.  
  28.                     <!-- comment or cdata -->
  29.                     .k  {margin-left:1em; text-indent:-1em; margin-right:1em}
  30.  
  31.                     <!-- tag -->
  32.                     .t  {color:#000066}
  33.  
  34.                     <!-- elementtype +eleemnt-->
  35.                     .et  {color:#0000FF}
  36.  
  37.                     <!-- xdr default element attributes-->
  38.                     .xdra  {color:#006600}
  39.  
  40.                     <!-- tag in xsl namespace -->
  41.                     .xt {color:#990099}
  42.  
  43.                     <!-- attribute in xml or xmlns namespace -->
  44.                     .ns {color:red}
  45.  
  46.                     <!-- markup characters -->
  47.                     .m  {color:blue}
  48.  
  49.                     <!-- text node -->
  50.                     .tx {font-weight:bold}
  51.  
  52.                     <!-- multi-line (block) cdata -->
  53.                     .db {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;   padding-left:.3em; border-left:1px solid #CCCCCC; font:small Courier}
  54.  
  55.                     <!-- single-line (inline) cdata -->
  56.                     .di {font:small Courier}
  57.  
  58.                     <!-- DOCTYPE declaration -->
  59.                     .d  {color:blue}
  60.  
  61.                     <!-- pi -->
  62.                     .pi {color:blue}
  63.  
  64.                     <!-- multi-line (block) comment -->
  65.                     .cb {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;              padding-left:.3em; font:small Courier; color:#888888}
  66.  
  67.                     <!-- single-line (inline) comment -->
  68.                     .ci {font:small Courier; color:#888888}         PRE {margin:0px; display:inline}   h1 {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18pt; color: #000000}          .heading { text-align:right;}         .content { vertical-align: baseline; }         .note { color:gray;}
  69.  
  70. .names   {font-family:' Arial, Helvetica'; font-weight:bold; font-size:12 }
  71. .source  {font-family:'Courier New'; font-size:12 }
  72. .values  {font-family:'Verdana, Arial, Helvetica'; font-size:12 }
  73. .headers {font-family:'Verdana, Arial, Helvetica'; font-weight:bold; font-size:12 }
  74. .descriptions {font-family:'Courier New'; color:redfont-size:12 }
  75.  
  76.  
  77.                 </style>
  78.                 <SCRIPT type="text/javascript">
  79.                     <xsl:comment>
  80. <![CDATA[
  81.         // Detect and switch the display of CDATA and comments from an inline view
  82.         //  to a block view if the comment or CDATA is multi-line.
  83.         function f(e)
  84.         {
  85.           // if this element is an inline comment, and contains more than a single
  86.           //  line, turn it into a block comment.
  87.           if (e.className == "ci") {
  88.             if (e.children(0).innerText.indexOf("\n") > 0)
  89.               fix(e, "cb");
  90.           }
  91.           
  92.           // if this element is an inline cdata, and contains more than a single
  93.           //  line, turn it into a block cdata.
  94.           if (e.className == "di") {
  95.             if (e.children(0).innerText.indexOf("\n") > 0)
  96.               fix(e, "db");
  97.           }
  98.           
  99.           // remove the id since we only used it for cleanup
  100.           e.id = "";
  101.         }
  102.         
  103.         // Fix up the element as a "block" display and enable expand/collapse on it
  104.         function fix(e, cl)
  105.         {
  106.           // change the class name and display value
  107.           e.className = cl;
  108.           e.style.display = "block";
  109.           
  110.           // mark the comment or cdata display as a expandable container
  111.           j = e.parentElement.children(0);
  112.           j.className = "c";
  113.  
  114.           // find the +/- symbol and make it visible - the dummy link enables tabbing
  115.           k = j.children(0);
  116.           k.style.visibility = "visible";
  117.           k.href = "#";
  118.         }
  119.  
  120.         // Change the +/- symbol and hide the children.  This function works on "element"
  121.         //  displays
  122.         function ch(e)
  123.         {
  124.           // find the +/- symbol
  125.           mark = e.children(0).children(0);
  126.           
  127.           // if it is already collapsed, expand it by showing the children
  128.           if (mark.innerText == "+")
  129.           {
  130.             mark.innerText = "-";
  131.             for (var i = 1; i < e.children.length; i++)
  132.               e.children(i).style.display = "block";
  133.           }
  134.           
  135.           // if it is expanded, collapse it by hiding the children
  136.           else if (mark.innerText == "-")
  137.           {
  138.             mark.innerText = "+";
  139.             for (var i = 1; i < e.children.length; i++)
  140.               e.children(i).style.display="none";
  141.           }
  142.         }
  143.         
  144.         // Change the +/- symbol and hide the children.  This function work on "comment"
  145.         //  and "cdata" displays
  146.         function ch2(e)
  147.         {
  148.           // find the +/- symbol, and the "PRE" element that contains the content
  149.           mark = e.children(0).children(0);
  150.           contents = e.children(1);
  151.           
  152.           // if it is already collapsed, expand it by showing the children
  153.           if (mark.innerText == "+")
  154.           {
  155.             mark.innerText = "-";
  156.             // restore the correct "block"/"inline" display type to the PRE
  157.             if (contents.className == "db" || contents.className == "cb")
  158.               contents.style.display = "block";
  159.             else contents.style.display = "inline";
  160.           }
  161.           
  162.           // if it is expanded, collapse it by hiding the children
  163.           else if (mark.innerText == "-")
  164.           {
  165.             mark.innerText = "+";
  166.             contents.style.display = "none";
  167.           }
  168.         }
  169.         
  170.         // Handle a mouse click
  171.         function cl()
  172.         {
  173.           e = window.event.srcElement;
  174.           
  175.           // make sure we are handling clicks upon expandable container elements
  176.           if (e.className != "c")
  177.           {
  178.             e = e.parentElement;
  179.             if (e.className != "c")
  180.             {
  181.               return;
  182.             }
  183.           }
  184.           e = e.parentElement;
  185.           
  186.           // call the correct funtion to change the collapse/expand state and display
  187.           if (e.className == "e")
  188.             ch(e);
  189.           if (e.className == "k")
  190.             ch2(e);
  191.         }
  192.         
  193.         // Erase bogus link info from the status window
  194.         function h()
  195.         {
  196.           window.status=" ";
  197.         }
  198.  
  199.         // Set the onclick handler
  200.         document.onclick = cl;
  201.         
  202.       ]]>
  203.                         //
  204.                     </xsl:comment>
  205.                 </SCRIPT>
  206.     
  207. </head>
  208.             <body bgcolor="#FFFFFF" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">
  209.                 <xsl:apply-templates/>
  210.                 <center>
  211.                 <table border="0" WIDTH="90%" BGCOLOR="#eeeeee" >
  212.                 <tr>
  213.                      <td> 
  214.                         <xsl:apply-templates mode="dtdSource" select="./dml:DocumentDef/dml:dtdsource"/>
  215.                     </td>
  216.                    </tr>
  217.                  </table>
  218.                 </center>
  219.                 
  220.             </body>
  221.         </html>
  222.     </xsl:template>
  223. <xsl:template match="dml:DocumentDef">
  224.         <table width="90%" border="0" cellspacing="4" cellpadding="2" align="center">
  225.             <tr  >
  226.                     <td bgcolor="#003366"  colspan="2" >
  227.                         <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  228.                      
  229.                         XML DTD -  
  230.                         <xsl:if test="@dml:Name">
  231.                             :
  232.                             <xsl:value-of select="@dml:Name"/> - 
  233.                         </xsl:if>
  234.                          <xsl:value-of select="$schemaName"/>
  235.                     </font>
  236.                 </td>
  237.             </tr>
  238.              <xsl:if test="dml:DDML.Doc">
  239.             <tr >
  240.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  241.                     Schema Comments:
  242.                 </td>
  243.                 <td class="descriptions" align="left" bgcolor="#EEEEEE" fgcolor="#FFAA00" valign="top">
  244.                     <font color="#990000">
  245.                     <xsl:apply-templates mode="comments" select="./DDML.Doc"/></font>
  246.                 </td>
  247.             </tr>
  248.              </xsl:if>
  249.             <tr>
  250.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  251.                     <div class="headers">Schema has:</div>
  252.                 </td>
  253.                 <td class="values" bgcolor="eeeeee" align="left" valign="top">
  254.                     <xsl:number value="count(dml:ElementDecl)"/>
  255.                                     element definitions and                                      
  256.                                     <xsl:number value="count(dml:ElementDecl//dml:AttDef)"/>
  257.                                     element attribute definitions.
  258.                 </td>
  259.             </tr>
  260.  
  261.             <tr>
  262.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  263.                     Posible root elements:
  264.                 </td>
  265.                 <td class="values" bgcolor="eeeeee" align="left" valign="top">
  266.                                 <xsl:for-each select="dml:ElementDecl">
  267.                                     <xsl:sort select="@Name"/>
  268.  
  269.                                     <xsl:choose>
  270.                                         <!-- Look for root elements  -->
  271.                                         <xsl:when test="/*[not(.//dml:Ref[@Element=current()/@Name])]">
  272.                                             <B>
  273.                                                 <
  274.                                                 <A>
  275.                                                     <xsl:attribute name="href">#ELEMENT_<xsl:value-of select="@Name"/>
  276.                                                     </xsl:attribute>
  277.                                                     <xsl:value-of select="@Name"/>
  278.                                                 </A>
  279.                                                 >
  280.                                             </B>
  281.                                             <xsl:choose>
  282.                                                 <xsl:when test=".//dml:Ref">†</xsl:when>
  283.                                                 <xsl:otherwise>(orphan?)   </xsl:otherwise>
  284.                                             </xsl:choose>
  285.                                             <xsl:if test="(position()+1) mod 3 = 1">
  286.                                                 <br/>
  287.                                             </xsl:if>
  288.                                         </xsl:when>
  289.                                     </xsl:choose>
  290.                                 </xsl:for-each>
  291.                 </td>
  292.             </tr>
  293.         </table>
  294.         <p/>
  295.         <p/>        <p/>
  296.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  297.         <tr  >
  298.                     <td bgcolor="#003366"  >
  299.                         <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  300.                             Element list
  301.                         </font>
  302.                 </td>
  303.             </tr>            
  304.         </table>
  305.         <p/>
  306.         <xsl:apply-templates mode="anElement" select="dml:ElementDecl"/>
  307.  
  308.         <P/>
  309.         <P/>
  310.         <P/>
  311.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  312.             <tr>
  313.             <td bgcolor="#bbbbbb"  >
  314.                 <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  315.                     <xsl:if test="@Name">
  316.                         <xsl:value-of select="@Name"/>
  317.                     </xsl:if>
  318.                     Original Schema Source
  319.  
  320.                 </font>
  321.             </td>
  322.             </tr>            
  323.         </table>        
  324.     </xsl:template>
  325. <!--END s:schema***********************************************************-->
  326. <!--END s:schema***********************************************************-->
  327.     <xsl:template mode="anElement" match="dml:ElementDecl">
  328.         <center>
  329.             <table width="90%" cellspacing="0" cellpadding="2" border="0" >
  330.                 <tr bgcolor="#003366">
  331.                     <td>
  332.                         <font face="Arial,Helvetica" color="#FFFFFF">
  333.                             Element
  334.                             <A>
  335.                                 <xsl:attribute name="name">ELEMENT_<xsl:value-of select="@Name"/>
  336.                                 </xsl:attribute>
  337.                                 <b>
  338.                                     <xsl:value-of select="@Name"/>
  339.                                 </b>
  340.                             </A>
  341.                         </font>
  342.                     </td>
  343.                 </tr>
  344.             </table>
  345.         </center>
  346.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  347.             <tr>
  348.                 <td width="3%" bgcolor="#4444FF" align="left" valign="middle">†</td>
  349.                 <td width="97%" align="left" valign="top">
  350.                     <table width="100%" cellspacing="3" cellpadding="1" border="0" bordercolor="#FFFFFF" align="left">
  351.                         <tr>
  352.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  353.                                     diagram 
  354.                                 </td>
  355.                             <td align="left" valign="top" bgcolor="#eeeeeeee" >
  356.                                 <img>
  357.                                     <xsl:attribute name="SRC"><xsl:value-of select="$imageDir"/>/<xsl:value-of select="@Name"/>.gif
  358.                                     </xsl:attribute>
  359.                                 </img>
  360.                             </td>
  361.                         </tr>
  362.                         <xsl:if test="DDML:Doc">
  363.                             <tr>
  364.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  365.                                     description
  366.                                 </td>
  367.                                 <td width="85%" class="descriptions"  align="left" bgcolor="#eeeeeeee" wrap="true">
  368.                                     <font color="#990000">
  369.                                     <xsl:apply-templates mode="schemacomments" select="./DDML:Doc"/></font>
  370.                                 </td>
  371.                             </tr>
  372.                         </xsl:if>
  373.                         <tr>
  374.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  375.                                 attributes
  376.                             </td>
  377.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  378.                                 <xsl:apply-templates mode="glanceAttrib" select="./dml:AttGroup | ./dml:More"/>
  379.                             </td>
  380.                         </tr>
  381.                          <tr>
  382.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  383.                                 uses
  384.                             </td>
  385.                             <td width="85%" class="values" bgcolor="#eeeeeeee"> <xsl:apply-templates mode="uses" select="dml:Model" />
  386.                             </td>
  387.                         </tr>
  388.                     </table>
  389.                 </td>
  390.             </tr>
  391.         </table>
  392.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  393.             <tr>
  394.                 <td width="3%" bgcolor="#6666FF" align="center" valign="top">†</td>
  395.                 <td width="97%" align="center" valign="left">
  396.                     <table width="100%" cellspacing="3" cellpadding="1" border="0" align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  397.                         <!-- Find the parents -->
  398.                         <TR>
  399.                             <TD width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">used by</TD>
  400.                             <TD class="values" bgcolor="#eeeeee" align="left" valign="top">
  401.                                 <xsl:choose>
  402.                                     <xsl:when test="../dml:ElementDecl[.//dml:Ref[@Element = current()/@Name ]]">
  403.                                         <xsl:for-each select="../dml:ElementDecl[.//dml:Ref[@Element = current()/@Name ]]">                                            <xsl:sort select="@Name"/>
  404.                                             <A class="element-link">
  405.                                                 <xsl:attribute name="HREF">
  406.                                                     #ELEMENT_
  407.                                                     <xsl:value-of select="@Name"/>
  408.                                                 </xsl:attribute>
  409.                                                 <xsl:value-of select="@Name"/>
  410.                                             </A>
  411.                                             †
  412.                                             <xsl:if test="current()[position()!=last()]">,</xsl:if>
  413.                                         </xsl:for-each>
  414.                                     </xsl:when>
  415.                                     <xsl:otherwise>
  416.                                         <xsl:choose>
  417.                                             <xsl:when test=".//dml:Model">
  418.                                                 <SPAN class="note">Not used by other elements. Possible root element.</SPAN>
  419.                                             </xsl:when>
  420.                                             <xsl:otherwise>
  421.                                                 <SPAN class="note">Not used by other elements. Probably an orphan.</SPAN>
  422.                                             </xsl:otherwise>
  423.                                         </xsl:choose>
  424.                                     </xsl:otherwise>
  425.                                 </xsl:choose>
  426.                             </TD>
  427.                         </TR>
  428.                         <tr>
  429.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  430.                             content
  431.                             </td>
  432.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  433. <xsl:apply-templates mode="content" select="dml:Model"/> </td>
  434.                         </tr>
  435.                         <tr>
  436.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  437.                             occurrence
  438.                             </td>
  439.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  440.                                 <xsl:apply-templates mode="occurrence" select="dml:Model"/> </td>
  441.                         </tr>
  442.                     </table>
  443.                 </td>
  444.             </tr>
  445.         </table>
  446.         <xsl:if test=".//dml:AttDef | ./dml:More/dml:DataType">
  447.             <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  448.                 <tr>
  449.                     <td width="3%" bgcolor="#8888FF" align="left" valign="top">†</td>
  450.                     <td width="97%" align="left" valign="top">
  451.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  452.                             <tr>
  453.                                 <th width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  454.                                     <span class="headers">Attribute</span>
  455.                                 </th>
  456.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  457.                                     <span class="headers">Datatype</span>
  458.                                 </th>
  459.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  460.                                     <span class="headers">Required</span>
  461.                                 </th>
  462.                                 <th width="25%" bgcolor="#CCCCCC" align="left"  >
  463.                                     <span class="headers">Values</span>
  464.                                 </th>
  465.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  466.                                     <span class="headers">Default</span>
  467.                                 </th>
  468.  
  469.                             </tr>
  470.                             <xsl:apply-templates mode="detailAttrib" select=".//dml:AttGroup | .//dml:More"/>
  471.                         </table>
  472.                         </td>
  473.                     </tr>
  474.                 </table>
  475.         </xsl:if>
  476.         <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  477.                 <tr>
  478.                     <td width="3%" bgcolor="#bbbbbb" align="left" valign="top">†</td>
  479.                     <td width="97%" align="left" valign="top">
  480.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  481.  
  482.                         <tr>
  483.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  484.                                 source
  485.                             </td>
  486.                             <td width="85%" class="source" bgcolor="#eeeeeeee" align="left" valign="top">
  487.                                      <xsl:apply-templates mode="dtdSource" select="./dml:dtdsource"/>
  488.                                     
  489.                             </td>
  490.                         </tr>
  491.                     </table>
  492.                     </td>
  493.                 </tr>
  494.             </table>
  495.         <p/>
  496.     </xsl:template>
  497.     <xsl:template mode="dtdSource" match="dml:dtdsource">
  498.         <xsl:value-of select="." disable-output-escaping= "yes" />
  499.           
  500.     </xsl:template>
  501.  
  502.  
  503.     <xsl:template mode="glanceAttrib" match="dml:AttDef">
  504.         <xsl:value-of select="@Name"/>  
  505.     </xsl:template>
  506.     <xsl:template mode="glanceAttrib" match="dml:More">
  507.         <xsl:value-of select="./dml:DataType"/>  
  508.     </xsl:template>
  509.  
  510.     <xsl:template mode="detailAttrib" match="dml:AttDef">
  511.         <tr>
  512.             <td width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  513.                 <span class="headers">
  514.                     <b>
  515.                         <xsl:value-of select="@Name"/>
  516.                     </b>
  517.                 </span>
  518.             </td>
  519.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  520. <!--                <A ><xsl:attribute name="href">#datatype_<xsl:value-of select="@dml:Type"/></xsl:attribute> </A>-->
  521.        <xsl:choose>
  522.         <xsl:when test="@Type">
  523.           <xsl:value-of select="@Type"/>
  524.         </xsl:when>
  525.         <xsl:otherwise>
  526.           string (default)
  527.         </xsl:otherwise>
  528.       </xsl:choose>
  529.       
  530.             </td>
  531.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  532.       <xsl:choose>
  533.         <xsl:when test="@Required">
  534.           <xsl:value-of select="@Required"/>
  535.         </xsl:when>
  536.         <xsl:otherwise>
  537.           no (default)
  538.         </xsl:otherwise>
  539.       </xsl:choose>
  540.             </td>
  541.             <td width="25%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  542.  
  543. <xsl:for-each select=".//dml:EnumerationValue">
  544.     <xsl:value-of select="@Value" />  
  545. </xsl:for-each>
  546.             </td>
  547.         
  548.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  549.  
  550.                     <xsl:value-of select="@AttValue"/>
  551.             </td>
  552.         </tr>
  553.     </xsl:template>
  554.     
  555.     <xsl:template mode="detailAttrib" match="dml:More">
  556.         <tr>
  557.             <td width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  558.                 <span class="headers">
  559.                     <b>
  560.                         <xsl:value-of select="@Name"/>
  561.                     </b>
  562.                 </span>
  563.             </td>
  564.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  565. <!--                <A ><xsl:attribute name="href">#datatype_<xsl:value-of select="@dml:Type"/></xsl:attribute> </A>-->
  566.        <xsl:choose>
  567.         <xsl:when test="./dml:DataType">
  568.           <xsl:value-of select="./dml:DataType"/>
  569.         </xsl:when>
  570.         <xsl:otherwise>
  571.           string (default)
  572.         </xsl:otherwise>
  573.       </xsl:choose>
  574.       
  575.             </td>
  576.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  577.  
  578.             </td>
  579.             <td width="25%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  580.  
  581.             </td>
  582.         
  583.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  584.  
  585.                      
  586.             </td>
  587.         </tr>
  588.     </xsl:template>
  589.  
  590.  
  591.     <!-- END detailattributetype TYPE -->
  592.         <xsl:template mode="anElement" match="element">
  593.         <A><xsl:attribute name="HREF">#ELEMENT_<xsl:value-of select="@type"/></xsl:attribute><xsl:value-of select="@type"/>
  594.         </A>  
  595.     </xsl:template>
  596.  
  597.     <xsl:template match="DDML:Doc" mode="schemacomments">
  598.          
  599.         <xsl:choose> 
  600.         <xsl:when test="not(@usage='USAGE')">
  601.                  <xsl:value-of select="text()"/>
  602.         </xsl:when> 
  603.         </xsl:choose>   
  604.             <!--<xsl:apply-templates mode="comments" />-->
  605.     </xsl:template>
  606.     
  607.     <xsl:template match="DDML:Doc" mode="usagecomments">
  608.         <xsl:choose> 
  609.         <xsl:when test="@usage='USAGE'">
  610.                  <xsl:value-of select="text()"/>
  611.         </xsl:when> 
  612.         </xsl:choose>   
  613.     </xsl:template>
  614.  
  615.     <xsl:template mode="uses" match="dml:Ref">
  616.         <A><xsl:attribute name="HREF">#ELEMENT_<xsl:value-of select="@Element"/>
  617.             </xsl:attribute>
  618.             <xsl:value-of select="@Element"/>
  619.         </A> 
  620.         <xsl:choose> 
  621.         <xsl:when test="@Frequency">
  622.              [<xsl:value-of select="@Frequency"/>]
  623.         </xsl:when> 
  624.         </xsl:choose>  
  625.         <xsl:if test="position()!=last()">, </xsl:if>
  626.     </xsl:template>
  627.  
  628.     <xsl:template mode="content" match="dml:Model">
  629.  
  630.         <xsl:if test="dml:Ref">reference</xsl:if>
  631.         <xsl:if test="dml:Choice">choice</xsl:if>
  632.         <xsl:if test="dml:Seq">a sequence of elements</xsl:if>
  633.         <xsl:if test="dml:Empty">empty </xsl:if>
  634.         <xsl:if test="dml:Any">character data and a sequence of elements</xsl:if>
  635.         <xsl:if test="dml:PCData">character data</xsl:if>
  636.         <xsl:if test="dml:Mixed">character data and a sequence of elements</xsl:if>
  637.     </xsl:template>
  638.  
  639.     <xsl:template mode="occurrence" match="dml:Seq | dml:Choice |dml:Mixed |dml:Any">
  640.   <xsl:choose>
  641.     <xsl:when test="@Frequency">
  642.         <xsl:value-of select="@Frequency"/>
  643.     </xsl:when>
  644.     <xsl:otherwise>
  645.         required (default)
  646.     </xsl:otherwise>
  647.   </xsl:choose>    
  648.  
  649.     </xsl:template>
  650.  
  651.     <xsl:template mode="uses" match="dml:Ref">
  652.         <A><xsl:attribute name="HREF">#ELEMENT_<xsl:value-of select="@Element"/>
  653.             </xsl:attribute>
  654.             <xsl:value-of select="@Element"/>
  655.         </A>  
  656.         <xsl:if test="current()[position()!=last()]">,</xsl:if>
  657.     </xsl:template>
  658.  
  659.     <xsl:template match="dml:Doc" mode="comments">
  660.         <xsl:copy>
  661.             <xsl:apply-templates mode="comments" />
  662.         </xsl:copy>
  663.     </xsl:template>
  664.  
  665.     <!-- ***********************SOURCE part...copied from lotus*****************-->
  666.  
  667. <!-- Templates for each node type follows.  The output of each template has a similar structure
  668.   to enable script to walk the result tree easily for handling user interaction. -->
  669.   
  670. <!-- Template for pis not handled elsewhere -->
  671. <xsl:template mode="copy" match="processing-instruction()">
  672.   <DIV class="e">
  673.   <SPAN class="b"> </SPAN>
  674.   <SPAN class="m"><?</SPAN><SPAN class="pi"><xsl:value-of select="name(.)"/> <xsl:value-of select="."/></SPAN><SPAN class="m">?></SPAN>
  675.   </DIV>
  676. </xsl:template>
  677.  
  678. <!-- Template for the XML declaration.  Need a separate template because the pseudo-attributes
  679.     are actually exposed as attributes instead of just element content, as in other pis 
  680. <xsl:template mode="copy" match="processing-instruction('xml')">
  681.   <DIV class="e">
  682.   <SPAN class="b"> </SPAN>
  683.   <SPAN class="m"><?</SPAN><SPAN class="pi">xml <xsl:for-each select="@*"><xsl:value-of select="name(.)"/>="<xsl:value-of select="."/>" </xsl:for-each></SPAN><SPAN class="m">?></SPAN>
  684.   </DIV>
  685. </xsl:template>
  686. -->
  687.  
  688. <!-- Template for attributes not handled elsewhere -->
  689. <xsl:template mode="copy" match="@*"><SPAN class="t"><xsl:text> </xsl:text><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
  690.  
  691. <!-- Template for attributes in the xmlns or xml namespace
  692. <xsl:template mode="copy"match="@xmlns:*|@xmlns|@xml:*"><SPAN class="ns"> <xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B class="ns"><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
  693. -->
  694.  
  695. <!-- Template for text nodes -->
  696. <xsl:template  mode="copy" match="text()">
  697.   <xsl:choose><xsl:when test="name(.) = '#cdata-section'"><xsl:call-template name="cdata"/></xsl:when>
  698.   <xsl:otherwise><DIV class="e">
  699.   <SPAN class="b"> </SPAN>
  700.   <SPAN class="tx"><xsl:value-of select="."/></SPAN>
  701.   </DIV></xsl:otherwise></xsl:choose>
  702. </xsl:template>
  703.   
  704. <!-- Template for comment nodes -->
  705. <xsl:template mode="copy" match="comment()">
  706.   <DIV class="k">
  707.   <SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m"><!--</SPAN></SPAN>
  708.   <SPAN id="clean" class="ci"><PRE><xsl:value-of select="."/></PRE></SPAN>
  709.   <SPAN class="b"> </SPAN> <SPAN class="m">--></SPAN>
  710.   <SCRIPT>f(clean);</SCRIPT></DIV>
  711. </xsl:template>
  712.  
  713. <!-- Template for cdata nodes -->
  714. <xsl:template  name="cdata">
  715.   <DIV class="k">
  716.   <SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m"><![CDATA[</SPAN></SPAN>
  717.   <SPAN id="clean" class="di"><PRE><xsl:value-of select="."/></PRE></SPAN>
  718.   <SPAN class="b"> </SPAN> <SPAN class="m">]]></SPAN>
  719.   <SCRIPT>f(clean);</SCRIPT></DIV>
  720. </xsl:template>
  721.  
  722. <!-- Template for elements not handled elsewhere (leaf nodes) -->
  723. <xsl:template mode="copy"  match="*">
  724.   <DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
  725.   <SPAN class="b"> </SPAN>
  726.   <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN> <xsl:apply-templates  mode="copy" select="@*"/><SPAN class="m"> /></SPAN>
  727.   </DIV></DIV>
  728. </xsl:template>
  729.   
  730. <!-- Template for elements with comment, pi and/or cdata children
  731. <xsl:template  mode="copy" match="*[comment() or processing-instruction() or cdata()]">
  732.   <DIV class="e">
  733.   <DIV class="c"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m"><</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/> <SPAN class="m">></SPAN></DIV>
  734.   <DIV><xsl:apply-templates  mode="copy" />
  735.   <DIV><SPAN class="b"> </SPAN> <SPAN class="m"></</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN></DIV>
  736.   </DIV></DIV>
  737. </xsl:template> -->
  738.  
  739. <!-- Template for elements with only text children -->
  740. <xsl:template mode="copy"  match="*[text() and not(comment() or processing-instruction() or *)]">
  741.   <DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
  742.   <SPAN class="b"> </SPAN> <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/>
  743.   <SPAN class="m">></SPAN><SPAN class="tx"><xsl:value-of select="."/></SPAN><SPAN class="m"></</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN>
  744.   </DIV></DIV>
  745. </xsl:template>
  746.  
  747. <!-- Template for elements with element children -->
  748. <xsl:template mode="copy"  match="*[*]">
  749.   <DIV class="e">
  750.   <DIV class="c" STYLE="margin-left:1em;text-indent:-2em"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/><SPAN class="m">></SPAN></DIV>
  751.   <DIV><xsl:apply-templates  mode="copy" />
  752.   <DIV><SPAN class="b"> </SPAN><SPAN class="m"></</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN></DIV>
  753.   </DIV></DIV>
  754. </xsl:template>
  755.     function writeEnumeration(_contextNodeList)
  756.     {
  757.       var __this = _contextNodeList.item(0);
  758.       return formatEnum(__this, __this.selectSingleNode("../@default"));
  759.     }
  760.     
  761. </xsl:stylesheet>
  762.